/**
 * 设备档案列表
 */
Ext.onReady(function() {
	//部门树
	var root = new Ext.tree.AsyncTreeNode({
				text : root_deptname,
				expanded : true,
				id : root_deptid
			});
	var deptTree = new Ext.tree.TreePanel({
				loader : new Ext.tree.TreeLoader({
							baseAttrs : {},
							dataUrl : 'shebeida.ered?reqCode=departmentTreeInit'
						}),
				root : root,
				title : '',
				applyTo : 'deptTreeDiv',
				autoScroll : false,
				animate : false,
				useArrows : false,
				border : false
			});
	deptTree.root.select();
	deptTree.on('click', function(node) {
				deptid = node.attributes.id;
				store.load({
							params : {
								start : 0,
								limit : bbar.pageSize,
								deptid : deptid
							}
						});
			});
	var contextMenu = new Ext.menu.Menu({
				id : 'deptTreeContextMenu',
				items : [{
							text : '新增档案',
							iconCls : 'page_addIcon',
							handler : function() {
								addInit();
							}
						}, {
							text : '刷新节点',
							iconCls : 'page_refreshIcon',
							handler : function() {
								var selectModel = deptTree.getSelectionModel();
								var selectNode = selectModel.getSelectedNode();
								if (selectNode.attributes.leaf) {
									selectNode.parentNode.reload();
								} else {
									selectNode.reload();
								}
							}
						}]
			});
	deptTree.on('contextmenu', function(node, e) {
				e.preventDefault();
				deptid = node.attributes.id;
				store.load({
							params : {
								start : 0,
								limit : bbar.pageSize,
								deptid : deptid
							},
							callback : function(r, options, success) {
								for (var i = 0; i < r.length; i++) {
									var record = r[i];
									var deptid_g = record.data.deptid;
									if (deptid_g == deptid) {
										grid.getSelectionModel().selectRow(i);
									}
								}
							}
						});
				node.select();
				contextMenu.showAt(e.getXY());
			});

	//功能表和列表
	var sm = new Ext.grid.CheckboxSelectionModel();
	var cm = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), sm, 
				{
				header : '设备编号',
				dataIndex : 'shebeibh',
				width : 80
			}, {
				header : '设备名称',
				dataIndex : 'shebeimc',
				width : 130
			}, {
				header : '使用单位',
				dataIndex : 'deptname',
				width : 130
			}, {
				header : '系统类别',
				dataIndex : 'xitonglb',
				renderer : XTLBRender,
				width : 130
			}, {
				header : '设备类型',
				dataIndex : 'sblxmc',
				width : 130
			}, {
				header : '状态',
				dataIndex : 'zhuangtai',
				renderer : SHEBEIZHUANGTAIRender,
				width : 130
			}, {
				header : '备注',
				dataIndex : 'benzhu',
				width : 130
			}]);

	/**
	 * 数据存储
	 */
	var store = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
							url : 'shebeida.ered?reqCode=queryShebeidaList'
						}),
				reader : new Ext.data.JsonReader({
							totalProperty : 'TOTALCOUNT',
							root : 'ROOT'
						}, [{
									name : 'shebeibh'
								}, {
									name : 'shebeimc'
								}, {
									name : 'deptname'
								}, {
									name : 'xitonglb'
								}, {
									name : 'sblxmc'
								}, {
									name : 'shebeilx'
								}, {
									name : 'zhuangtai'
								}, {
									name : 'benzhu'
								}, {
									name : 'pinpai'
								}, {
									name : 'xinghao'
								}, {
									name : 'pihao'
								}, {
									name : 'shengchangcj'
								}, {
									name : 'chuchangrq'
								}, {
									name : 'diaorurq'
								}, {
									name : 'shiyongnx'
								}, {
									name : 'zhejiul'
								}, {
									name : 'danjia'
								}])
			});

	// 翻页排序时带上查询条件
	store.on('beforeload', function() {
				this.baseParams = {
					queryParam : Ext.getCmp('queryParam').getValue()
				};
			});
	var pagesize_combo = new Ext.form.ComboBox({
				name : 'pagesize',
				hiddenName : 'pagesize',
				typeAhead : true,
				triggerAction : 'all',
				lazyRender : true,
				mode : 'local',
				store : new Ext.data.ArrayStore({
							fields : ['value', 'text'],
							data : [[10, '10条/页'], [20, '20条/页'],
									[50, '50条/页'], [100, '100条/页'],
									[250, '250条/页'], [500, '500条/页']]
						}),
				valueField : 'value',
				displayField : 'text',
				value : '50',
				editable : false,
				width : 85
			});
	var number = parseInt(pagesize_combo.getValue());
	pagesize_combo.on("select", function(comboBox) {
				bbar.pageSize = parseInt(comboBox.getValue());
				number = parseInt(comboBox.getValue());
				store.reload({
							params : {
								start : 0,
								limit : bbar.pageSize
							}
						});
			});

	var bbar = new Ext.PagingToolbar({
				pageSize : number,
				store : store,
				displayInfo : true,
				displayMsg : '显示{0}条到{1}条,共{2}条',
				emptyMsg : "没有符合条件的记录",
				items : ['-', '&nbsp;&nbsp;', pagesize_combo]
			});
	var grid = new Ext.grid.GridPanel({
				title : '<span class="commoncss">设备档案表</span>',
				iconCls : 'groupIcon',
				height : 500,
				// width:600,
				autoScroll : true,
				region : 'center',
				store : store,
				loadMask : {
					msg : '正在加载表格数据,请稍等...'
				},
				stripeRows : true,
				frame : true,
				cm : cm,
				sm : sm,
				tbar : [{
							text : '新增',
							iconCls : 'page_addIcon',
							handler : function() {
								addInit();
							}
						}, '-', {
							text : '修改',
							iconCls : 'page_edit_1Icon',
							handler : function() {
								editInit();
							}
						}, '-', {
							text : '删除',
							iconCls : 'page_delIcon',
							handler : function() {
								//deleteItems();
							}
						}, '->', new Ext.form.TextField({
									id : 'queryParam',
									name : 'queryParam',
									emptyText : '请输入设备名称',
									enableKeyEvents : true,
									listeners : {
										specialkey : function(field, e) {
											if (e.getKey() == Ext.EventObject.ENTER) {
												queryItem();
											}
										}
									},
									width : 130
								}), {
							text : '查询',
							iconCls : 'previewIcon',
							handler : function() {
								queryItem();
							}
						}, '-', {
							text : '刷新',
							iconCls : 'arrow_refreshIcon',
							handler : function() {
								store.reload();
							}
						}],
				bbar : bbar
			});
	store.load({
				params : {
					start : 0,
					limit : bbar.pageSize,
					firstload : 'true'
				}
			});
	grid.on('rowdblclick', function(grid, rowIndex, event) {
				//editInit();
			});
	grid.on('sortchange', function() {
				// grid.getSelectionModel().selectFirstRow();
			});

	bbar.on("change", function() {
				// grid.getSelectionModel().selectFirstRow();
			});
			
	/**
	 * 布局
	 */
	var viewport = new Ext.Viewport({
				layout : 'border',
				items : [{
							title : '<span class="commoncss">组织机构</span>',
							iconCls : 'chart_organisationIcon',
							tools : [{
										id : 'refresh',
										handler : function() {
											deptTree.root.reload();
										}
									}],
							collapsible : true,
							width : 130,
							minSize : 160,
							maxSize : 280,
							split : true,
							region : 'west',
							autoScroll : true,
							// collapseMode:'mini',
							items : [deptTree]
						}, {
							region : 'center',
							layout : 'fit',
							border : false,
							items : [grid]
						}]
			});

	/**
	 * 根据设备名称查询设备
	 */
	function queryItem() {
		var selectModel = deptTree.getSelectionModel();
		var selectNode = selectModel.getSelectedNode();
		var deptid = selectNode.attributes.id;
		store.load({
					params : {
						start : 0,
						limit : bbar.pageSize,
						queryParam : Ext.getCmp('queryParam').getValue(),
						deptid : deptid
					}
				});
	}

	
	//新增部门树
	var addRoot = new Ext.tree.AsyncTreeNode({
				text : root_deptname,
				expanded : true,
				id : root_deptid
			});
	var addDeptTree = new Ext.tree.TreePanel({
				loader : new Ext.tree.TreeLoader({
							baseAttrs : {},
							dataUrl : '../user.ered?reqCode=departmentTreeInit'
						}),
				root : addRoot,
				autoScroll : true,
				animate : false,
				useArrows : false,
				border : false
			});
	// 监听下拉树的节点单击事件
	addDeptTree.on('click', function(node) {
				comboxWithTree.setValue(node.text);
				Ext.getCmp("bumenbh").setValue(node.attributes.id);
				comboxWithTree.collapse();
			});
	var comboxWithTree = new Ext.form.ComboBox({
		id : 'deptname',
		store : new Ext.data.SimpleStore({
					fields : [],
					data : [[]]
				}),
		editable : false,
		value : ' ',
		emptyText : '请选择...',
		fieldLabel : '所属部门',
		labelStyle : micolor,
		anchor : '100%',
		mode : 'local',
		triggerAction : 'all',
		maxHeight : 390,
		// 下拉框的显示模板,addDeptTreeDiv作为显示下拉树的容器
		tpl : "<tpl for='.'><div style='height:100px'><div id='addDeptTreeDiv'></div></div></tpl>",
		allowBlank : false,
		onSelect : Ext.emptyFn
	});
	// 监听下拉框的下拉展开事件
	comboxWithTree.on('expand', function() {
				// 将UI树挂到treeDiv容器
				addDeptTree.render('addDeptTreeDiv');
				// addDeptTree.root.expand(); //只是第一次下拉会加载数据
				addDeptTree.root.reload(); // 每次下拉都会加载数据

			});


	
	//系统类别combo
	var xtlbCombo = new Ext.form.ComboBox({
		        fieldLabel : '系统类别',
		        name : 'xitonglb',
		        hiddenName : 'xitonglb',
				store : XTLBStore,
				mode : 'local',
				triggerAction : 'all',
				valueField : 'value',
				displayField : 'text',
				emptyText : '请选择...',
				labelStyle : micolor,
				allowBlank : false,
				forceSelection : true,
				editable : false,
				typeAhead : true,
				anchor : "100%"
			});
		
	xtlbCombo.on('select', function() {
				sblxCombo.reset();
				var value = xtlbCombo.getValue();
				sblxStore.load({
							params : {
								xitonglb : value
							}
						});
				});
	
	//设备类型combo
	var sblxStore = new Ext.data.Store({
						proxy : new Ext.data.HttpProxy({
									url : 'shebeida.ered?reqCode=querySblxDatas'
								}),
						reader : new Ext.data.JsonReader({}, [{
											name : 'value'
										}, {
											name : 'text'
										}])
					});

	var sblxCombo = new Ext.form.ComboBox({
				name : 'sblxmc',
				hiddenName : 'shebeilx', 
				fieldLabel : '设备类别',
				emptyText : '请选择...',
				triggerAction : 'all',
				store : sblxStore,
				displayField : 'text',
				valueField : 'value',
				loadingText : '正在加载数据...',
				mode : 'local', // 数据会自动读取,如果设置为local又调用了store.load()则会读取2次；也可以将其设置为local，然后通过store.load()方法来读取
				labelStyle : micolor,
				forceSelection : true,
				typeAhead : true,
				resizable : true,
				editable : false,
				allowBlank : false,
				anchor : '100%'
			});
	
		var shebeidaFormPanel = new Ext.form.FormPanel({
						border : false,
						labelWidth : 60, // 标签宽度
						labelAlign : 'right', // 标签对齐方式
						bodyStyle : 'padding:3 5 0', // 表单元素和表单面板的边距
						buttonAlign : 'center',
						height : 120,
						items : [{
									layout : 'column',
									border : false,
									items : [{
												columnWidth : .5,
												layout : 'form',
												labelWidth : 60, // 标签宽度
												defaultType : 'textfield',
												border : false,
												items : [comboxWithTree,
												       
														sblxCombo,
														{
															fieldLabel : '批号',
															id : 'pihao',
															name : 'pihao', // name:后台根据此name属性取值
															allowBlank : true, // 是否允许为空
															maxLength : 50, // 可输入的最大文本长度,不区分中英文字符
															anchor : '100%' // 宽度百分比
														},{
															xtype : 'datefield',
															fieldLabel : '出厂日期', // 标签
															name : 'chuchangrq', // name:后台根据此name属性取值
															format : 'Y-m-d', // 日期格式化
															allowBlank : true,
															anchor : '100%' // 宽度百分比
														},  {
															fieldLabel : '使用年限',
															name : 'shiyongnx',
															xtype : 'numberfield', // 设置为数字输入框类型
															allowDecimals : false, // 是否允许输入小数
															allowNegative : false, // 是否允许输入负数
															allowBlank : true,
															maxValue : 120,
															anchor : '100%'
														}, {
															fieldLabel : '单价(元)',
															name : 'danjia',
															xtype : 'numberfield', // 设置为数字输入框类型
															allowDecimals : false, // 是否允许输入小数
															allowNegative : false, // 是否允许输入负数
															allowBlank : true,
															anchor : '100%'
														}, {
															fieldLabel : '折旧率(折)',
															name : 'zhejiul',
															xtype : 'numberfield', // 设置为数字输入框类型
															allowDecimals : false, // 是否允许输入小数
															allowNegative : false, // 是否允许输入负数
															allowBlank : true,
															maxValue : 120,
															anchor : '100%'
														},{
															id : 'bumenbh',
															name : 'bumenbh',
															hidden : true
													    }, {
															id : 'windowmode',
															name : 'windowmode',
															hidden : true
														}]
											}, {
												columnWidth : .5,
												layout : 'form',
												labelWidth : 60, // 标签宽度
												defaultType : 'textfield',
												border : false,
												items : [xtlbCombo,
														 {
															fieldLabel : '设备名称',
															id : 'shebeimc',
															name : 'shebeimc', // name:后台根据此name属性取值
															allowBlank : false, // 是否允许为空
															maxLength : 50, // 可输入的最大文本长度,不区分中英文字符
															labelStyle : micolor,
															anchor : '100%' // 宽度百分比
														},{
															fieldLabel : '品牌',
															id : 'pinpai',
															name : 'pinpai', // name:后台根据此name属性取值
															allowBlank : true, // 是否允许为空
															maxLength : 50, // 可输入的最大文本长度,不区分中英文字符
															anchor : '100%' // 宽度百分比
														},{
															fieldLabel : '型号',
															id : 'xinghao',
															name : 'xinghao', // name:后台根据此name属性取值
															allowBlank : true, // 是否允许为空
															maxLength : 50, // 可输入的最大文本长度,不区分中英文字符
															anchor : '100%' // 宽度百分比
														},{
															fieldLabel : '生产厂家',
															id : 'shengchangcj',
															name : 'shengchangcj', // name:后台根据此name属性取值
															allowBlank : true, // 是否允许为空
															maxLength : 50, // 可输入的最大文本长度,不区分中英文字符
															anchor : '100%' // 宽度百分比
														},{
															xtype : 'datefield',
															fieldLabel : '调入日期', // 标签
															name : 'diaorurq', // name:后台根据此name属性取值
															format : 'Y-m-d', // 日期格式化
															value : new Date(),
															anchor : '100%' // 宽度百分比
														}, {
															fieldLabel : '备注', // 标签
															name : 'benzhu', // name:后台根据此name属性取值
															maxLength : 20, // 可输入的最大文本长度,不区分中英文字符
															xtype : 'textfield',
															allowBlank : true,
															anchor : '100%'// 宽度百分比
														},
														{
														id : 'zhuangtai',
														name : 'zhuangtai',
														value : "0",
														hidden : true
													    }]
											}]
								}]
					});
			



	var addShebeidaWindow = new Ext.Window({
				title : '<span class="commoncss">新建设备档案<span>', // 窗口标题
				layout : 'fit', // 设置窗口布局模式
				width : 600, // 窗口宽度
				height : 280, // 窗口高度
				closable : false, // 是否可关闭
				collapsible : true, // 是否可收缩
				maximizable : true, // 设置是否可以最大化
				border : false, // 边框线设置
				constrain : true, // 设置窗口是否可以溢出父容器
				animateTarget : Ext.getBody(),
				pageY : 20, // 页面定位Y坐标
				pageX : document.body.clientWidth / 2 - 600 / 2, // 页面定位X坐标
				items : [shebeidaFormPanel], // 嵌入的表单面板
				buttons : [{
							text : '保存',
							iconCls : 'acceptIcon',
							handler : function() {
								var mode = Ext.getCmp('windowmode').getValue();
								if (mode == 'add')
									saveItem();
								else if(mode == 'edit')
									updateItem();
							}
						}, {
							text : '重置',
							id : 'btnReset',
							iconCls : 'tbar_synchronizeIcon',
							handler : function() {
								shebeidaFormPanel.getForm().reset();
							}
						}, {
							text : '关闭',
							iconCls : 'deleteIcon',
							handler : function() {
								addShebeidaWindow.hide();
							}
						}]
			});
			
	function addInit() {
		var selectModel = deptTree.getSelectionModel();
		var selectNode = selectModel.getSelectedNode();
		Ext.getCmp('windowmode').setValue('add');
		Ext.getCmp('deptname').setValue(selectNode.attributes.text);
		Ext.getCmp('bumenbh').setValue(selectNode.attributes.id);
		addShebeidaWindow.show();
	}
	
	function saveItem() {
		if (!shebeidaFormPanel.form.isValid()) {
			return;
		}
		shebeidaFormPanel.form.submit({
					url : 'shebeida.ered?reqCode=saveShebeida',
					waitTitle : '提示',
					method : 'POST',
					waitMsg : '正在处理数据,请稍候...',
					success : function(form, action) {
						addShebeidaWindow.hide();
						store.load({
							params : {
								start : 0,
								limit : bbar.pageSize,
								deptid : deptid
							}
						});
						form.reset();
						Ext.MessageBox.alert('提示', action.result.msg);
					},
					failure : function(form, action) {
						var msg = action.result.msg;
						Ext.MessageBox.alert('提示', '设备档案数据保存失败:<br>' + msg);
					}
					
				});
	}

	//TODO 编辑处 ，设备类型因联动待考虑，同时考虑编辑 设备编号、部门、系统类别、设备类型 不可修改
	function editInit() {
		var record = grid.getSelectionModel().getSelected();
		if (Ext.isEmpty(record)) {
			Ext.MessageBox.alert('提示', '请先选择要修改的设备档案!');
			return;
		}
		shebeidaFormPanel.getForm().loadRecord(record);
		addShebeidaWindow.show();
		addShebeidaWindow.setTitle('<span class="commoncss">修改设备档案</span>');
		Ext.getCmp('windowmode').setValue('edit');
		sblxStore.load({
							params : {
								xitonglb : record.get('xitonglb')
							}
						});
		
		//Ext.getCmp('shebeilx').selectByValue(record.get('shebeilx'),true);
		Ext.getCmp('btnReset').hide();
	}
	
	function updateItem() {
		if (!addShebeidaWindow.form.isValid()) {
			return;
		}
		shebeidaFormPanel.form.submit({
					url : './user.ered?reqCode=updateUserItem',
					waitTitle : '提示',
					method : 'POST',
					waitMsg : '正在处理数据,请稍候...',
					success : function(form, action) {
						addShebeidaWindow.hide();
						store.reload();
						form.reset();
						Ext.MessageBox.alert('提示', action.result.msg);
					},
					failure : function(form, action) {
						var msg = action.result.msg;
						Ext.MessageBox.alert('提示', '人员数据修改失败:<br>' + msg);
					}
				});
	}



	/**
	 * 删除项目
	 */
	function deleteCatalogItem() {
		var record = grid.getSelectionModel().getSelected();
		if (Ext.isEmpty(record)) {
			Ext.Msg.alert('提示:', '请先选中项目');
			return;
		}
		Ext.MessageBox.confirm('请确认', '确认删除吗?', function(btn, text) {
					if (btn == 'yes') {
						if (runMode == '0') {
							Ext.Msg.alert('提示',
									'系统正处于演示模式下运行,您的操作被取消!该模式下只能进行查询操作!');
							return;
						}
						showWaitMsg();
						Ext.Ajax.request({
									url : 'integrateDemo.ered?reqCode=deleteSfxm',
									success : function(response) { // 回调函数有1个参数
										var resultArray = Ext.util.JSON
												.decode(response.responseText);
										Ext.Msg.alert('提示', resultArray.msg);
										store.reload();
									},
									failure : function(response) {
										Ext.MessageBox.alert('提示', '数删除失败');
									},
									params : {
										xmid : record.data.xmid
									}
								});
					}
				})
	}

});